import dayjs from 'dayjs'
import type { ConfigType, OpUnitType } from 'dayjs'

// 获取当天的最后一秒时间戳
export const endOfTodayTime = dayjs().endOf('day').toDate().getTime()
export const lessOfTodayTime = endOfTodayTime - 3600 * 24 * 1000
/**
 * 禁用今天23:59:59后的日期, 给date-picker的disabledDate用的
 * @param date 组件传递的参数
 * @returns boolean
 */
export const disabledDateToday = (date: Date) => {
  // 禁用今天后的时间
  return date.getTime() > endOfTodayTime
}

/**
 * 禁用今天23:59:59后的日期, 给date-picker的disabledDate用的
 * @param date 组件传递的参数
 * @returns boolean
 */
export const disabledDateLessToday = (date: Date) => {
  // 禁用昨天后的时间
  return date.getTime() > lessOfTodayTime
}

/**
 * @description 判断传入的日期字符串是否符合传入的日期格式
 * @param dateStr 日期字符串：例如2024-01-01
 * @param dateFormat 日期格式：例如 YYYY-MM-DD
 * @returns boolean
 */
export const isDateFormat = (dateStr: string, dateFormat: string) => {
  return dayjs(dateStr, dateFormat, true).isValid()
}

/**
 * @description 根据传入的日期差计算相应的间隔数
 * @param startDate 日期格式
 * @param endDate 日期格式
 * @param dateType 日期差类型：day、week、month、year等
 * @returns number
 */
export const getMonthDifference = (startDate: ConfigType, endDate: ConfigType, dateType: OpUnitType = 'day') => {
  const start = dayjs(startDate)
  const end = dayjs(endDate)

  return end.diff(start, dateType)
}
